

class MyArrayList<E>{
    private E[] elem;// 建立数组
    private int usedSize;// 有效元素个数

    public  MyArrayList(){// 构造方法
        this.elem = (E[]) new Object[10];// 默认数组初始容量为 10
//        this.elem = new E[10];
    }
    public void add(E val){// 添加元素
        this.elem[usedSize] = val;
        usedSize++;
    }
    public E get(int pos){// 得到指定位置的元素
        return  this.elem[pos];
    }

//    public<T> T[] getArray(int size){
//        T[] genericArray = new T[size];
//        return  genericArray;
//    }
public Object[] getArray(int size){
    Object[] genericArray = new Object[size];
    return  genericArray;
}
}
public class Test {
    public static void main(String[] args) {
        MyArrayList<String> myArrayList = new MyArrayList<>();
        // 我就是想的一个 长度为10字符串数组
        String[] str = (String[]) myArrayList.getArray(10);

    }

    public static void main6(String[] args) {
        MyArrayList<String> myArrayList = new MyArrayList<>();
        System.out.println(myArrayList);
        MyArrayList<Integer> myArrayList1 = new MyArrayList<>();
        System.out.println(myArrayList1);
        MyArrayList<Boolean> myArrayList2 = new MyArrayList<>();
        System.out.println(myArrayList2);
    }


    public static void main3(String[] args) {
        // 假设 我们指定了 该顺序表的数据类型 为 String
        MyArrayList<String> myArrayList1 = new MyArrayList<>();
        myArrayList1.add("abc");
        String str = myArrayList1.get(0);
        System.out.println(str);
        System.out.println("================");
        MyArrayList<Integer> myArrayList2 = new MyArrayList<>();
        myArrayList2.add(1);
        int i = myArrayList2.get(0);
        System.out.println(i);
    }


    public static void main2(String[] args) {
        // 在创建 MyArrayList的对象时，需要在类型后面加上尖括号
        // 尖括号里的内容，指定这个顺序表能存储的数据类型，
        // 而且数据类型必须是 类的类型，基础数据类型 要使用包装类
        // 后面的<>里可以不写内容。它会自动根据前面的括号来确定类型

        // 顺序表1 指定存储数据类型为 String 类型
        MyArrayList<String> myArrayList1 = new MyArrayList<>();


        // 顺序表2 指定存储数据类型为 Integer（整形） 类型
        MyArrayList<Integer> myArrayList2 = new MyArrayList<>();


    }

    public static void main1(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        myArrayList.add(1);
        myArrayList.add("hello");
        String str = (String) myArrayList.get(1);
        System.out.println(str);
    }

}
